package util

import (
	"os"
	"strings"
)

func FileExists(path string) bool {
	if _, err := os.Stat(path); err != nil {
		if os.IsNotExist(err) {
			return false
		}
	}
	return true
}

func IsDir(path string) bool {
	s, err := os.Stat(path)
	if err != nil {
		return false
	}
	return s.IsDir()
}

func IsFile(path string) bool {
	return !IsDir(path)
}

func Mkdir(path string) error {
	err := os.Mkdir(path, os.ModePerm)
	return err
}

func MkdirAll(path string) error {
	return os.MkdirAll(path, os.ModePerm)
}

func CreateDir(path string) bool {
	// 截取目录
	path = path[:strings.LastIndex(path, "/")]
	err := MkdirAll(path)
	if err != nil {
		return false
	}
	return true
}

func WriteFile(path string, bt []byte) bool {
	var r = true
	// 写文件
	file, err := os.OpenFile(path, os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0666)
	if err != nil {
		// 文件打开失败
		r = false
	} else {
		_, err := file.Write(bt)
		if err != nil {
			// 文件写入失败
			r = false
		} else {
			if !FileClose(file) {
				// 文件关闭失败
				r = false
			}
		}
	}
	return r
}

func FileClose(file *os.File) (r bool) {
	if file != nil {
		err := file.Close()
		if err == nil {
			// 文件关闭没有错误
			return true
		}
	}
	return
}
